/*
* Copyright 2013 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.laquysoft.droidconnl;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.ContextThemeWrapper;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.TextView;
public class TriviaQuestionActivity extends BaseActivity implements
OnTouchListener {
private String ID_LEADERBOARD;
public TriviaQuestionActivity() {
super(CLIENT_PLUS | CLIENT_GAMES);
}
LinearLayout linearLayout;
LinearLayout textViewLayout;
Handler h = new Handler();
private boolean keepAnimating = false;
private boolean hasAnswered = false;
AnimationDrawable nononoAnimation;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_trivia_question);
Hunt hunt = Hunt.getHunt(getResources(), getApplicationContext());
ID_LEADERBOARD = getResources().getString(R.string.leaderboard_id);
linearLayout = (LinearLayout) findViewById(R.id.linearLayoutTQ);
Clue clue = hunt.getLastCompletedClue();
hunt.setQuestionState(Hunt.QUESTION_STATE_QUESTIONING);
hunt.save(getResources(), getApplicationContext());
if ( clue != null)
{
if (clue.question != null) {
setQuestion(clue.question);
} else {
// Something is pretty wrong, so let's get out of here.
finish();
}
}else {
// Something is pretty wrong, so let's get out of here.
finish();
}
}
public void setQuestion(TriviaQuestion tq) {
LinearLayout ll = (LinearLayout) getLayoutInflater().inflate(
R.layout.question_frag, null);
TextView textView = (TextView) ll.findViewById(R.id.question_text_frag);
textView.setText(tq.question);
textView.setId(-1);
linearLayout.addView(ll);
textView.setVisibility(View.VISIBLE);
for (int i = 0; i < tq.answers.size(); i++) {
LinearLayout ll2 = (LinearLayout) getLayoutInflater().inflate(
R.layout.answer_frag, linearLayout);
AnswerTextView atv = (AnswerTextView) ll2
.findViewById(R.id.answer_text_frag);
atv.setText(tq.answers.get(i));
atv.answerNum = i;
atv.setId(-1);
atv.setOnTouchListener(this);
}
linearLayout.forceLayout();
}
@Override
public void onResume() {
super.onResume();
setAnimating(true);
}
@Override
public void onStop() {
super.onStop();
setAnimating(false);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
final Clue clue = Hunt.getHunt(getResources(), getApplicationContext())
.getLastCompletedClue();
// Wait if we're waiting for toast pop.
if (hasAnswered) {
return true;
}
AnswerTextView tv = (AnswerTextView) v;
// Deal with flipping colors on and off
tv.onTouch(tv, event);
// Don't do anything on down besides flip color.
if (event.getAction() != MotionEvent.ACTION_UP) {
return true;
}
final Hunt hunt = Hunt.getHunt(getResources(), getApplicationContext());
hunt.setQuestionState(Hunt.QUESTION_STATE_NONE);
hunt.save(getResources(), getApplicationContext());
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
};
ContextThemeWrapper ctw = new ContextThemeWrapper( this, R.style.AppTheme );
AlertDialog.Builder builder = new AlertDialog.Builder(this);
boolean isUnderPar = hunt.getSecondsLeft() > 0;
hasAnswered = true;
keepAnimating = false;
if (tv.answerNum == clue.question.correctAnswer) {
builder.setMessage(clue.question.rightMessage)
.setPositiveButton("OK", dialogClickListener).setCancelable(false).show();
hunt.achievementManager.storeIncrement(AchievementManager.ID_5_TRIVIA_CORRECTLY);
if (isUnderPar) {
hunt.achievementManager.storeIncrement(AchievementManager.ID_TEACHERS_PET);
hunt.achievementManager.onQuestionAnswered(getApiClient(), isUnderPar, this);
}
hunt.save(getResources(), getApplicationContext());
} else {
/*AlertDialog.Builder alertadd = new AlertDialog.Builder(
this);
LayoutInflater factory = LayoutInflater.from(this);
final View view = factory.inflate(R.layout.wronganswer, null);
ImageView nononoImage = (ImageView) view.findViewById(R.id.nonono);
nononoImage.setVisibility(View.VISIBLE);
nononoAnimation.start();
alertadd.setView(view);
alertadd.setMessage(clue.question.wrongMessage);
alertadd.setPositiveButton("OK", dialogClickListener).setCancelable(false).show();
*/
builder.setMessage(clue.question.wrongMessage)
.setPositiveButton("OK", dialogClickListener).setCancelable(false).show();
}
return true;
}
public void setAnimating(Boolean val) {
keepAnimating = val;
if (val) {
tick();
}
}
private Runnable ticker = new Runnable() {
@Override
public void run() {
tick();
}
};
public void tick() {
int timeLeft = Hunt.getHunt(getResources(), getApplicationContext())
.getSecondsLeft();
TextView tv = (TextView) findViewById(R.id.timeLeft);
if (timeLeft <= 0) {
tv.setText("Missed par");
} else {
tv.setText("Par time left:" + timeLeft);
}
if (keepAnimating) {
h.postDelayed(ticker, 200);
}
}
@Override
protected int getLayoutResource() {
return R.layout.activity_trivia_question;
}
}